home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 398 / 398.xpi / chrome / forecastfox.jar / content / ping / tracker.js < prev   
Text File  |  2010-02-04  |  2KB  |  77 lines

  1. /*------------------------------------------------------------------------------
  2.   Copyright (c) 2008 Ensolis, LLC. All Rights Reserved.
  3.   ----------------------------------------------------------------------------*/
  4. var FFTracker = {
  5.    queue: [],
  6.    timer: null,
  7.    
  8.   _service: null,
  9.   get service() {
  10.     if (!this._service) {
  11.       var mgr = Components.classes["@ensolis.com/forecastfox/manager-service;1"].
  12.                 getService(Components.interfaces.ffIManagerService);
  13.       this._service = mgr.ping;
  14.     }
  15.     return this._service;
  16.   },
  17.   
  18.   /**
  19.    * Main entry point for tracking ui events.  This pushes the values into a
  20.    * processing queue and starts a timer to delay the actual processing.
  21.    */
  22.   trackEvent: function fftracker_trackEvent(category, action, label, value) {
  23.     
  24.     // queue the item to track
  25.     var item = {
  26.         "type": "event",
  27.         "category": category,
  28.         "action": action,
  29.         "label": label,
  30.         "value": value
  31.     };
  32.     this.queue.push(item);
  33.     
  34.     // start the track timer
  35.     if (!this.timer) {
  36.       var self = this;
  37.       this.timer = window.setTimeout(function() { self.process(); }, 100);
  38.     }
  39.   },
  40.   
  41.   /**
  42.    * Main entry point for tracking a url.  This pushes the values into a
  43.    * processing queue and starts a timer to delay the actual processing.
  44.    */
  45.   trackURL: function fftracker_trackURL(url) {
  46.     
  47.     // queue the item to track
  48.     var item = {
  49.         "type": "url",
  50.         "url": url
  51.     };
  52.     this.queue.push(item);
  53.     
  54.     // start the track timer
  55.     if (!this.timer) {
  56.       var self = this;
  57.       this.timer = window.setTimeout(function() { self.process(); }, 100);
  58.     }
  59.   },  
  60.   
  61.   process: function fftracker_process() {
  62.     this.timer = null;
  63.     
  64.     while (this.queue.length) {
  65.       item = this.queue.shift();
  66.       if (item.type == "event")
  67.         this.service.trackEvent(item.category, item.action, item.label, item.value);
  68.       else
  69.         this.service.trackURL(item.url);
  70.     }
  71.   },
  72.   
  73.   /* ::::: Sugar to make tracking easier ::::: */
  74.   tooltipLoad: function fftracker_tooltipLoad(group) {
  75.     this.trackEvent("tooltip", "load", group);  
  76.   }
  77. };